
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

#include "ohos_init.h"
#include "cmsis_os2.h"
#include "iot_gpio.h"
//#include "hi_io.h"
//#include "hi_time.h"
#include "iot_pwm.h"
//#include "hi_pwm.h"
#include "iot_gpio_ex.h"
#include "iot_ssl_gpio.h"
#include "hcsr04.h"

#define left_q                 11
#define left_h                 10
#define right_q                2
#define right_h                3
#define water                  9
#define GPIOFUNC 0
#define PWM_FREQ_FREQUENCY  (60000)

void wcar_motor(unsigned int  gpio, IotGpioValue value)
{
    IoTGpioInit(gpio);
    IoSetFunc(gpio, GPIOFUNC);
    IoTGpioSetDir(gpio, IOT_GPIO_DIR_OUT);
    IoTGpioSetOutputVal(gpio, value);
}

void wcar_stop(void)
{
    osal_printk( "stop!\r\n");
    wcar_motor(left_q, IOT_GPIO_VALUE0);
    wcar_motor(left_h, IOT_GPIO_VALUE0);
    wcar_motor(right_q, IOT_GPIO_VALUE0);
    wcar_motor(right_h, IOT_GPIO_VALUE0);

    //GetDistance();
}

void wcar_forward(uint32_t jl)
{
    osal_printk( "gogogo\r\n" );
    wcar_motor(left_q, IOT_GPIO_VALUE1);
    wcar_motor(right_q, IOT_GPIO_VALUE1);
    osal_msleep(jl);
    wcar_stop();

}

void wcar_backward(uint32_t jl)
{
    osal_printk( "back\r\n" );
    wcar_motor(left_h, IOT_GPIO_VALUE1);
    wcar_motor(right_h, IOT_GPIO_VALUE1);
    osal_msleep(jl);
    wcar_stop();
}

void wcar_left(uint32_t jl)
{
    osal_printk( "left\r\n" );
    wcar_motor(left_q, IOT_GPIO_VALUE1);

    osal_msleep(jl);
    wcar_stop();

}

void wcar_right(uint32_t jl)
{
    osal_printk( "right\r\n" );
    wcar_motor(right_q, IOT_GPIO_VALUE1);

    osal_msleep(jl);
    wcar_stop();

}

void water_on(void)
{
    osal_printk( "water_on\r\n" );
    wcar_motor(water, IOT_GPIO_VALUE1);
}

void water_off(void)
{
    osal_printk( "water_off\r\n" );
    wcar_motor(water, IOT_GPIO_VALUE0);
}